/** * Handle all aspects of date validation: fill error object, highlight or clear element * @param element elem the form element, which must have an id * @param object err an object where 2 properties will be filled: msg with the error message and el with elem * @return void */ function ValidateDate(elem, err) { if (!ValidDate(elem.value)) { err.msg += 'Η ημ/νία είναι λάθος\n'; if (err.el == null) err.el = elem; new Effect.Highlight(elem.id, {startcolor:'#ff0000', endcolor:'#fcc8ce', duration: 0.5}); $(elem.id).style.backgroundColor = '#fcc8ce'; } else $(elem.id).style.backgroundColor = ''; } /** * Checks for valid date * @param string dt date to check * @return boolean */ function ValidDate(dt) { var re = /(\d+)\/(\d+)\/(\d+)/i; f = dt.match(re); // f[0] is the initial string if ((!f) || (f.length != 4)) return false; if (f[0] != dt) return false; var dd = f[1]; var mm = f[2] - 1; var yy = f[3]; if (yy < 1900) return false; var r = new Date(yy, mm, dd, 0, 0, 0); if ((r.getFullYear() != yy) || (r.getMonth() != mm) || (r.getDate() != dd)) return false; return true; } /** * Checks for valid date and time * @param string dt datetime to check * @return boolean */ function ValidDatetime(dt) { var re = /(\d+)\/(\d+)\/(\d+) (\d+):(\d+)/i; f = dt.match(re); // f[0] is the initial string if ((!f) || (f.length != 6)) return false; if (f[0] != dt) return false; var dd = f[1]; var mm = f[2] - 1; var yy = f[3]; var hh = f[4]; var mi = f[5]; if (yy < 1900) return false; var r = new Date(yy, mm, dd, hh, mi, 0); if ((r.getFullYear() != yy) || (r.getMonth() != mm) || (r.getDate() != dd) || (r.getHours() != hh) || (r.getMinutes() != mi)) return false; return true; } function ValidTextarea(elem) { return true; } /** * If valid date, returns javascript date object * @param string dt datetime to check in user format (e.g. dd/mm/yyyy) * @return javascript date object */ function GetJsDate(dt) { if (!ValidDate(dt)) return false; var re = /(\d+)\/(\d+)\/(\d+)/i; f = dt.match(re); var dd = f[1]; var mm = f[2] - 1; var yy = f[3]; var d = new Date(); d.setDate(dd) d.setMonth(mm); d.setFullYear(yy); return d; } /** * Checks for valid integer * @param string num number to check * @return boolean */ function ValidInt(num) { var length = num.length; var ch; if (length == 0) return false; for (var i = 0; i < length; i++) { ch = num.substring(i, i + 1); if (ch < "0" || ch > "9") return false; } return true; } /** * Checks for valid real (also converts , -> .) * @param string num_el element with number to check * @return boolean */ function ValidReal(num_el) { var ch; var decimal = 0; var value = num_el.value.replace(/,/, "."); var length = value.length; if (length == 0) return false; for (var i = 0; i < length; i++) { ch = value.substring(i, i + 1); if ((ch < "0" || ch > "9") && (ch != ".")) return false; if (ch == ".") { decimal++; } if (decimal == 2) return false; } num_el.value = value; return true; } /** * Checks for valid afm. Empty strings return false. * @param string afm to check * @return boolean */ function IsAfm(afm) { var a, b, c, d, e, f, g, h, i, s, y; var ret; if (afm.length != 9) return false; a = afm.charAt(0); b = afm.charAt(1); c = afm.charAt(2); d = afm.charAt(3); e = afm.charAt(4); f = afm.charAt(5); g = afm.charAt(6); h = afm.charAt(7); i = afm.charAt(8); s = a * 256 + b * 128 + c * 64 + d * 32 + e * 16 + f * 8 + g * 4 + h * 2; y = s % 11; ret = true; if ((y == 10) && (i != 0)) ret = false; if ((y < 10) && (i != y)) ret = false; return ret; } /** * Trims a string * @param string s the string to trim * @return trimmed string */ function trim(s) { while (s.substring(0, 1) == ' ') s = s.substring(1, s.length); while (s.substring(s.length - 1, s.length) == ' ') s = s.substring(0, s.length - 1); return s; } /** * Grows textarea when height is reached. To use add * onkeyup="GrowTextarea(this);" onfocus="GrowTextarea(this);" * to the